package com.letv.whatslive.model;

import com.letv.whatslive.model.redis.chat.protocol.ChatEvent;
import com.mongodb.DBRef;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

/**
 * Created by gaoshan on 15-7-7.
 */

@Getter
@Setter
public class Program {

    private Long id;
    private String pName;
    private String pDesc;
    private int pType;  //节目类型 1:直播 2:预约 3:录播 99:上传视频
    private Long userId;  //发布人id
    private DBRef userRef; //发布人
    private Integer status; //状态 1:正常 0:删除或下线 -1:转码中 -2:直播时间过短不转码
    private String location; //直播发布的地理位置
    private String province;
    private String city;
    private String picture; //用户直播封面
    private String bigPicture; //大图封面
    private String listPicture; //列表封面
    private long likeNum; //点赞数
    private long watchNum; //观看人数
    private long watchCount; //观看人次
    private long commentNum; //评论数

    private long realLikeNum; // 真实点赞数
    private long realWatchNum; // 真实观看人数
    private long realWatchCount; //真实观看人次
    private long realCommentNum; //真实评论数

    private Long startTime; //直播开始时间
    private Long endTime;  //直播结束时间
    private Long createTime;
    private Long updateTime;


    private Long orderNum; //预约人数
    private Long displayOrderNum;//cms中维护的预约人数
    private Long priority; //优先级
    private int isShow = 1; //0：表示不显示，1：表示显示，是否在推荐中显示，默认为显示。
    private String primaryPName; //原始标题

    private Integer from;    //直播发起设备类型 1：ios 2：android 3:web 4:H5 默认为ios

    private Integer isCarousel; //是否是轮播台，1表示是，其他表示不是
    private String liveId; //轮播台LiveID
    private String activityId; //直播活动ID
    private String videoId; //录播视频ID
    private String vuid; //录播视频唯一标识，录播播放必须参数
    private List<Long> tagList;
    private Integer isContinue; //该直播是否可持续推流 1是，0否
    private List<Map<String, Object>> assorts; //视频分类
    private List<Map<String, Object>> activity; //活动分类
    private Activity act; // 活动
    private String iconUrl; // 角标
    private String copyWriter; // 活动分享文案
    private String likeIconUrl;// 活动点赞图标地址
    private String likeIconMd5;// 活动点赞图标Md5值
    private List<ChatEvent> recentComment; // 最近的评论
    private String playUrl; // H5视频播放URL
    private Long playTime; // 视频时长(秒)
    private String requestHeader; // 请求头信息
    private Integer isPrivacy; // 是否私密 1: 是 0：否
    private String source; //视频来源  GoPro:GoPro,1001:大疆无人机,1002:行车记录仪
    private String param1; //备用参数
    private String param2; //备用参数
    private String param3; //备用参数
    private Integer machineCount; // 机位数
    private ChatEvent recentSystemComment; // 最近一条系统评论
    private Integer deleteStatus;//1:运营下线,2:用户删除，3:运营下线后恢复 4:未开始推流 5:腾讯云不支持直播转点播 6:后台监控自动下线 7:转点播失败
    /*======================= 视频上传字段 ======================*/
    private Long mid; // 上传视频媒资id
    private Long vid; // 上传视频id
    private Integer videoUploadStatus; // 视频上传状态 -3:转码失败 -2:上传媒资失败 -1:上传失败 0:上传成功 1:上传媒资成功 2:转码成功 default：未初始化
    private Integer videoUploadRole; // 视频上传用户角色 1：用户，2：运营
    private Integer videoUploadReviewStatus; // 视频上传审核状态 -1:审核中 0:审核不通过 1:审核通过
    /**
     * 转录播状态
     * <p/>
     * UPLOAD_OVER: 上传完毕
     * PLAY_OK: 可以正常播放
     * OK: 处理成功
     * DEAL_FAILED: 转码失败
     * SOURCE_FAILED: 片源错误
     * PUBLISH_FAILED: 发布失败
     * UPLOAD_FAILED: 上传失败
     * CHECK_FAILED: 审核失败
     */
    private String replayConvertStatus;
    private String gifPicture; //动图封面
    private Integer liveServiceProvider; // 直播服务提供商
    private String tencentChannelId; // 腾讯云频道ID
    private Integer sourceType; // 视频来源 1:乐视云个人直播 2:rtmp直播台 3:TX云直播 4:乐视网hls轮播台 5:云点播 6:上传视频播放 7:TX点播播放
    private String activityInfo; // 直播活动信息(Json)
    private String videoInfoIOS; // IOS用录播视频信息(Json)
    private String videoInfoAndroid; // Android用录播视频信息(Json)
    private String videoInfoH5; // H5用录播视频信息(Json)
    private String videoInfoPC; // PC用录播视频信息(Json)
    private String appId; // APP ID  10000:乐嗨 10001:车联网
    private Integer uploadPic; // 用户是否上传封面图 0:否 1:是
//    private Integer indexOrder; //首页排序字段，1:表示普通直播或者录播，2:表示红人(加V)直播或者录播，3:表示签约主播的直播或者录播，99:表示置顶直播或者录播
    private Integer userRole; //用户角色，0普通用户，1普通认证用户，2管理员，3企业认证用户，4表示主播用户

    private String backupProgramId;//对于有问题的直播，重新发起可以将新的直播Id放入此字段，客户端、pc、h5点击观看的时候首先查看此字段是否有值，如果有值则播放此字段的直播
    private List<Integer> locationToShow;//直播、录播按照区域进行展示，1-海外，2-北上广深杭，3-其他（北上广深杭外的其他大陆地区），全球(1,2,3)，默认内容所属区域为全球，其他三项可多选

    //自定义评论ID
    private Long customCommentId;

    private Integer isLandscape;//是否横屏：1表示横屏，0表示竖屏

    /**
     * 以下字段只用于页面显示，不在数据库中存储
     */
    private long watchOnlineUserNum; //在线观看人数，用于页面显示
    private String startTimeStr; //直播开始时间字符串，用于页面显示，显示格式"yyyy-MM-dd HH-mm-ss"
    private String endTimeStr; //直播结束时间字符串，用于页面显示，显示格式"yyyy-MM-dd HH-mm-ss"
    private String createTimeStr; //创建时间字符串，用于页面显示，显示格式"yyyy-MM-dd HH-mm-ss"
    private String nickName; //发布者nickName，用于页面显示。
    private Integer userLevel; //发布者等级，用于页面显示。
    private Integer realUserRole; //用户的角色
    private long reportNum; //举报次数，用于页面显示
    private Long tagId;//用于页面显示
    private String tagValue;//用于页面显示
    private String actionLogUrl; //回放日志URL
    private int actionLogVer; //回放日志版本
    private Integer robotStatus;//开启机器人开启状态， 1-开启，0-关闭；
    private Integer sendGift;//发送礼物状态， 1-开启，0-关闭；
    private String autoRecommendDateStr; //轮播台自动推荐时间
    private String autoUnRecommendDateStr; //轮播台自动取消推荐时间

    private int incWatchNumOpen;//直播播放页观看人数和观看人次动态增加自增开关 0-关，1-开
    private Long watchNumGrow;//手动观看人数增长数量
    private Long likeNumGrow;//手动点赞数增长数量
    private Long watchNumCustom;//自定义观看人数增长数量
    private int changeLocation; //是否修改显示未知，0为否，1为是
}
